%070416, a
\begin{problem}{Компоненты связности}
{connect.in}{connect.out}
{2 секунды}{256 мегабайт}

Вам задан неориентированный граф с $N$ вершинами и $M$ ребрами
($1 \le N \le 20\,000$, $1 \le M \le 200\,000$). В графе отсутствуют петли
и кратные ребра.

Определите компоненты связности заданного графа.

\InputFile

Граф задан во входном файле следующим образом: первая строка содержит
числа $N$ и $M$. Каждая из следующих $M$ строк содержит описание ребра
--- два целых числа из диапазона от $1$ до $N$ --- номера концов ребра.

\OutputFile

На первой строке выходного файла выведите число $L$ ---
количество компонент связности заданного графа. На следующей
строке выведите $N$ чисел из диапазона от $1$ до $L$ --- номера
компонент связности, которым принадлежат соответствующие вершины.
Компоненты связности следует занумеровать от $1$ до $L$ произвольным образом.

\Example

\begin{example}
\exmp{
4 2
1 2
3 4
}{
2
1 1 2 2
}%
\end{example}

\end{problem}
